|
Acceso a Bases de Datos [JDBC] |
Utilizar Uniones
Algunas veces necesitamos utilizar una o más tablas para obtener los datos que queremos. Por ejemplo, supongamos que el propietario del "The Coffee Break" quiere una lista de los cafés que le compra a Acme, Inc. Esto implica información de la tabla COFFEES y también de la que vamos a crear SUPPLIERS. Este es el caso en que se necesitan los "joins" (unión). Una unión es una operación de base de datos que relaciona dos o más tablas por medio de los valores que comparten. En nuestro ejemplo, las tablas COFFEES y SUPPLIERS tienen la columna SUP_ID, que puede ser utilizada para unirlas.
Antes de ir más allá, necesitamos crear la tabla SUPPLIERS y rellenarla con valores.
El sigueinte código crea la tabla SUPPLIERS.
String createSUPPLIERS = "create table SUPPLIERS " + "(SUP_ID INTEGER, SUP_NAME VARCHAR(40), " + "STREET VARCHAR(40), CITY VARCHAR(20), " + "STATE CHAR(2), ZIP CHAR(5))"; stmt.executeUpdate(createSUPPLIERS);
El siguiente código inserta filas para tres suministradores dentro de SUPPLIERS.
stmt.executeUpdate("insert into SUPPLIERS values (101, " +
"'Acme, Inc.', '99 Market Street', 'Groundsville', " + "'CA', '95199'");
stmt.executeUpdate("Insert into SUPPLIERS values (49," +
"'Superior Coffee', '1 Party Place', 'Mendocino', 'CA', " + "'95460'");
stmt.executeUpdate("Insert into SUPPLIERS values (150, " +
"'The High Ground', '100 Coffee Lane', 'Meadows', 'CA', " + "'93966'");
El siguiente código selecciona la tabla y nos permite verla.
ResultSet rs = stmt.executeQuery("select * from SUPPLIERS");
El resultado sería algo similar a esto.
| SUP_ID | SUP_NAME | STREET | CITY | STATE | ZIP |
|---|---|---|---|---|---|
| ---------- | ---------------------- | --------------------- | ---------------- | --------- | --------- |
| 101 | Acme, Inc. | 99 Market Street | Groundsville | CA | 95199 |
| 49 | Superior Coffee | 1 Party Place | Mendocino | CA | 95460 |
| 150 | The High Ground | 100 Coffee Lane | Meadows | CA | 93966 |
Ahora que tenemos las tablas COFFEES y SUPPLIERS, podremos proceder con el escenario en que el propietario quería una lista de los cafés comprados a un suministrador particular. Los nombres de los suminstradores están en la tabla SUPPLIERS, y los nombres de los cafés en la tabla COFFEES. Como ambas tablas tienen la columna SUP_ID, podemos utilizar esta columna en una unión. Lo siguiente que necesitamos es la forma de distinguir la columna SUP_ID a la que nos referimos. Esto se hace precediendo el nombre de la columna con el nombre de la tabla, "COFFEES.SUP_ID" para indicar que queremos referirnos a la columna SUP_ID de la tabla COFFEES. En el siguiente código, donde stmt es un objeto Statement, seleccionamos los cafés comprados a Acme, Inc..
String query = "
SELECT COFFEES.COF_NAME " +
"FROM COFFEES, SUPPLIERS " +
"WHERE SUPPLIERS.SUP_NAME LIKE 'Acme, Inc.'" +
"and SUPPLIERS.SUP_ID = COFFEES.SUP_ID";
ResultSet rs = stmt.executeQuery(query);
System.out.println("Coffees bought from Acme, Inc.: ");
while (rs.next()) {
String coffeeName = getString("COF_NAME");
System.out.println(" " + coffeeName);
}
Esto producirá la siguiente salida.
Coffees bought from Acme, Inc..
Colombian
Colombian_Decaf
Saludos Ricard. Muchas gracias por el exelente aporte era lo que estaba buscando. Si me pudieras facilitar la aplicacion completa de la que hablas aca te lo agradeceria muchisimo, ya mire el link pero ya no esta ha de ser por el tiempo que ha pasado. Nuevamente MIL GRACIAS
















































